package br.com.JZSolution.domineduplexserver.modelo;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Usuario implements Serializable {
	
	private static final Long serialVersionUID = -4120873341664524238L;

	private Long idUsuario;
	private Integer porta;
	
	private String nome;
	private String senha;

	private String email;
	
	private String ip;
	private Boolean online;
	
	List<Usuario> listaDeContatos;
	
	public Usuario(){}
	public Usuario(String nome, String senha, String email){
		this.nome = nome;
		this.senha = senha;
		this.email = email;
	}
	
	public Usuario(String login,String senha){
		this.senha = senha;
		this.email = login;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getIp() {
		return ip;
	}
	public void setIp(String ip) {
		this.ip = ip;
	}
	public boolean isOnline() {
		return online;
	}
	public void setOnline(boolean online) {
		this.online = online;
	}
	public List<Usuario> getListaDeContatos() {
		return listaDeContatos;
	}
	public void setListaDeContatos(List<Usuario> listaDeContatos) {
		this.listaDeContatos = listaDeContatos;
	}
	public long getIdUsuario() {
		return idUsuario;
	}
	public void setIdUsuario(long idUsuario) {
		this.idUsuario = idUsuario;
	}
	public int getPorta() {
		return porta;
	}
	public void setPorta(int porta) {
		this.porta = porta;
	}
	
	public Map<String, String> propriedades(){
		
		Map<String, String> props = new HashMap<String, String>();
		
		Field[] map = this.getClass().getDeclaredFields();
		for (Field field : map) {
			try{
				System.out.println("Nome = "+field.getName()+ " -- tipo = "+field.getType());
				System.out.println(" --------valor = "+field.get(this));
				if(field.get(this)!=null){
					props.put(field.getName(), field.get(this).toString());	
				}
			
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		return props;
	}
	
}
